// 入口文件 

// 引入css
import './css/index.css';

// 引入Vue
import Vue from 'vue';

// 引入一个时间格式化工具 
import moment from "moment";

// 全局过滤时间 
Vue.filter('dataFormat', function (dataStr, pattern = 'YYYY-MM-DD HH:mm:ss') {
    return moment(dataStr).format(pattern);
})


// 导入vuex ----- 用来托管vue中组件传值的数据
import Vuex from 'vuex';
Vue.use(Vuex);


// 导入vue-resource
import VueResource from 'vue-resource';
Vue.use(VueResource);
Vue.http.options.root = 'http://www.liulongbin.top:3005';
// 设置post 请求的数据格式
Vue.http.options.emulateJson = true;

// 引入vue路由
import VueRouter from "vue-router";
Vue.use(VueRouter);
import router from './router';

// 引入vue图片预加载插件---
import VuePreview from 'vue-preview';
Vue.use(VuePreview);

// 引入mui
import '../lib/mui/css/mui.min.css';
import '../lib/mui/css/icons-extra.css'

// 引入局部mint-ui 
// import { header, Swipe, SwipeItem, Button ,  Lazyload } from "mint-ui";
// Vue.component(header.name,header);
// Vue.component(Swipe.name, Swipe);
// Vue.component(SwipeItem.name, SwipeItem);
// Vue.component(Button.name,Button)
// Vue.use(Lazyload);

// 引入全部mint-ui
import MintUI from 'mint-ui';
import 'mint-ui/lib/style.css';
Vue.use(MintUI);

// 引入App
import App from './App.vue';


// 获取本地存储的文件内容
var car = JSON.parse(localStorage.getItem('car') || '[]');

// 创建一个vuex中 store 实例  
var store = new Vuex.Store({
    state: {
        // 相当于data ----用来存储数据
        car: car
    },
    mutations: {
        // 相当于methods  ----处理一些方法的函数
        // 设置一个函数--来处理子组件传来的数据
        addToCar(state, goodsInfo) {
            var flag = false; // 用来判断传递过来的数据是否在数据中能否找到
            state.car.some((item) => {
                if (item.id === goodsInfo.id) {
                    item.count = item.count + goodsInfo.count;
                    flag = true; //表示数据已经更新无需将传递过来的对象加到数组中去
                    return true;
                }
            });
            if (!flag) {
                state.car.push(goodsInfo);
            };
            // 将数据存到本地上 ---localstorage  --
            localStorage.setItem('car', JSON.stringify(state.car));
        },
   
        deleteFormCar(state,id){
            state.car.some((item,i) =>{
                if(item.id == id) {
                    state.car.splice(i,1);
                    return true;
                }
            });
            localStorage.setItem('car',JSON.stringify(state.car));
        },
        // info 是一个对象---装着id 和 val
        selectedChange(state,info){
            state.car.some(item =>{
                if(item.id == info.id){
                    item.selected = info.selected;
                    return true;
                }
            });
            // 将数据保存到本地存储中---
            localStorage.setItem('car',JSON.stringify(state.car));
        }
    },
    getters: {
        sum: function (state) {
            var sum = 0;
            state.car.forEach((item) => {
                sum += item.count;
            })
            return sum;
        },
        getGoodsCount: function (state) {
            var obj = {};
            state.car.forEach((item) => {
                obj[item.id] = item.count;
            })
            return obj;
        },
        getSelected(state){
            var obj = {};
            state.car.forEach(item =>{
                obj[item.id] = item.selected;
            })
            return obj
        },
        getPrice(state){
            var obj = {
                count:0,
                sum:0
            };
            state.car.forEach(item =>{
                if (item.selected) {
                    obj.count += item.count;
                    obj.sum += (item.price * item.count)
                };
            });
            return obj
        }
    }
})




var vm = new Vue({
    el: '#app',
    render: (c) => {
        return c(App);
    },
    router,
    store //将vuex中的实例挂载到vue 中---
})